package cn.caplike.demo.repository.java;

/**
 * Description: 位移运算相关.
 *
 * @author LiKe
 * @version 1.0.0
 * @date 2021-01-12 20:00
 */
public class AboutBit {

    private static Boolean bool;

    public static void main(String[] args) {
        final int target = Integer.MAX_VALUE;

        System.out.println(14 & target % 3);
        System.out.println(15 & target % 3);
        System.out.println(16 & target % 3);
        System.out.println(17 & target % 3);
        System.out.println(18 & target % 3);
        System.out.println(19 & target % 3);
        System.out.println(20 & target % 3);
        System.out.println(21 & target % 3);
        System.out.println(22 & target % 3);
        System.out.println(23 & target % 3);
        System.out.println(24 & target % 3);
        System.out.println(25 & target % 3);
        System.out.println(26 & target % 3);
        System.out.println(27 & target % 3);
        System.out.println(28 & target % 3);

//        // 0000 0000 0000 0000 0000 0000 0000 1101
//        System.out.println(target + "       的二进制表示: " + Integer.toBinaryString(target));
//
//        // 0000 0000 0000 0000 0000 0000 0000 0110 逻辑右移: 移走的位填充为 0
//        System.out.println(target + " >>> 1 的二进制表示: " + Integer.toBinaryString(target >>> 1)); // 高位补 0
//
//        // 算数右移: 移走的位填充与符号位有关, 如果为负数; 则移走的位填充为 1
//        System.out.println(target + "  >> 2 的二进制表示: " + Integer.toBinaryString(target >> 2));
//
//        // 0000 0000 0000 0000 0000 0000 0011 0100
//        System.out.println(target + "  << 2 的二进制表示: " + Integer.toBinaryString(target << 2));
//
//        System.out.println("(1 << 16) - 1 的二进制表示: " + Integer.toBinaryString((1 << 16) - 1));
    }
}
